#include <iostream>
#include <fstream>
#include <sstream>
#include "json/json.h"
#include "json/parser.h"

using namespace std;
using namespace Asukai::json;

int main() {
    Json j1;
    Json j7("sdsa");
    Json j2(string("hnihao"));
    Json j3(true);
    Json j4(j3);
    Json j5(23);
    Json j6(12.5);

    int i = j5;
    double d = j6;
    bool b = j3;
    string s = j7;

    int i2 = j5.asInt();
    double d2 = j6.asDouble();
    bool b2 = j3.asBool();
    string s2 = j7.asString();

    Json j9;
    j9.append(j2);
    j9.append(j7);
    j9.append(j4);
    j9[6] = j6;
    j9.remove(2);
    // cout << sizeof(j9.m_type) << endl;
    // cout << sizeof(j9.m_value) << endl;
    // cout << sizeof(j9) << endl;

    // // cout << sizeof(j7.m_type) << endl;
    // // cout << sizeof(j7.m_value) << endl;
    // // cout << sizeof(std::map<int, std::string>) << endl;

    // cout << j9.str() << endl;

    // Json j10;
    // j10["j1"] = j1;
    // j10["j9"] = j9;
    // cout << j10.str() << endl;

    // Json j11;
    // j11["double"] = 1.42;
    // j11["int"] = 11;
    // j11["str"] = "hell";
    // j11["bool"] = true;
    // cout << j11.str() << endl;;

    // j11.remove("double");
    // j11.remove("bool");

    // for(auto it = j9.begin(); it != j9.end(); ++it) {
    //     cout << it->str() << endl;
    // }

    // Json j12(j11);
    // if(j12 == j2) {
    //     cout << "1111" << endl;
    // } else {
    //     cout << "22222" << endl;
    // }

    // cout << j12.has("bool");
    // cout << j12.has("21");

    // const string str = "null";
    // Json j;
    // j.parse(str);
    // cout << j.str() << endl;

    // const string str1 = "true";
    // Json j1;
    // j1.parse(str1);
    // cout << j1.str() << endl;

    // const string str2 = "false";
    // Json j2;
    // j2.parse(str2);
    // cout << j2.str() << endl;

    // const string str3 = "[null, 12312, \"23123\", \"a\", true,false, 12.31, [12312, \"23123\", 12.31]]";
    // Json j3;
    // j3.parse(str3);
    // cout << j3.str() << endl;

    // const string str = "{\"a\":1,\"dasd\":12.12,\"231\":\"sacxz\",\"sdv\":null}";
    // Json j;
    // j.parse(str);
    // cout << j.str() << endl;

    // ifstream fin("/home/asukai/code/myJson/test.json", ios::in | ios::out);
    // if(fin) {
    //     cout << "open success" << endl;
    // } else {
    //     cout << "open failed" << endl;
    // }
    // stringstream ss;
    // ss << fin.rdbuf();
    // const string& str = ss.str();
    // // cout << str;
    // Json j;
    // j.parse(str);
    // cout << j.str() << endl;
    return 0;
}